﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using vudu.Logica.Clases;

namespace vudu.PaginasWeb.G2Horario
{
    public partial class consultarPreMatriculaEstudiante : System.Web.UI.Page
    {
        private int _idPreMatriculaSelected;
        private Estudiante _estudianteActual;
        private Escuela _escuelaActual;
        private TableRow _newRow;
        private TableCell _newCell;
        private Label _newLabel;
        private List<string> _diasSemana;
        private string[] _cod;

        protected void InitComponents()
        {
        }

        public void LoadCells(SeccionMateria miSeccion)
        {
            _newCell = new TableCell();
            _newCell.Width = 400;
            _newCell.HorizontalAlign = HorizontalAlign.Left;
            _newCell.BorderWidth = 1;
            _newRow.Cells.Add(_newCell);
            _newLabel = new Label();
            miSeccion.HorasClase.Sort(delegate(HorarioDeClase miHorario1, HorarioDeClase miHorario2)
            {
                return miHorario1.Dia.CompareTo(miHorario2.Dia);
            });
            foreach (HorarioDeClase miHorario in miSeccion.HorasClase)
            {
                LoadLabels(miHorario);
            }
            //_newLabel.Text = misSecciones.Materia.Nombre;
            _newCell.Controls.Add(_newLabel);
        }

        protected void LoadLabels(HorarioDeClase miHorario)
        {
            string minuteIni;
            string minuteFin;

            if (miHorario.HoraInicio.Minute.ToString().Length < 2)
                minuteIni = "0" + miHorario.HoraInicio.Minute.ToString();
            else
                minuteIni = miHorario.HoraInicio.Minute.ToString();

            if (miHorario.HoraFin.Minute.ToString().Length < 2)
                minuteFin = "0" + miHorario.HoraFin.Minute.ToString();
            else
                minuteFin = miHorario.HoraFin.Minute.ToString();

            _newLabel.Text += miHorario.Dia + ": " + miHorario.HoraInicio.Hour.ToString() + ":" +
                                minuteIni + " a " + miHorario.HoraFin.Hour.ToString() + ":" + minuteFin +
                                " en " + miHorario.SalonDeClase.Nombre + " .    ";
        }

        public void LoadPractices(Practica myPractice)
        {
            _newRow = new TableRow();
            tablePreMatricula.Rows.Add(_newRow);
            _newCell = new TableCell();
            _newCell.Width = 200;
            _newCell.HorizontalAlign = HorizontalAlign.Left;
            _newCell.BorderWidth = 1;
            _newRow.Cells.Add(_newCell);
            _newLabel = new Label();
            _newLabel.Text = "Practica de " + myPractice.NombrePractica;
            _newCell.Controls.Add(_newLabel);

            _newCell = new TableCell();
            _newCell.Width = 400;
            _newCell.HorizontalAlign = HorizontalAlign.Left;
            _newCell.BorderWidth = 1;
            _newRow.Cells.Add(_newCell);
            _newLabel = new Label();
            myPractice.horarioDeClase.Sort(delegate(HorarioDeClase miHorario1, HorarioDeClase miHorario2)
            {
                return miHorario1.Dia.CompareTo(miHorario2.Dia);
            });
            foreach (HorarioDeClase miHorario in myPractice.horarioDeClase)
            {
                LoadLabels(miHorario);
            }
            _newCell.Controls.Add(_newLabel);
        }

        public void LoadRows(HorarioPreMatricula miPreMatriculaSeleccionada)
        {
            foreach (SeccionMateria misSecciones in miPreMatriculaSeleccionada.ListaSecciones)
            {
                _newRow = new TableRow();
                tablePreMatricula.Rows.Add(_newRow);
                _newCell = new TableCell();
                _newCell.Width = 200;
                _newCell.HorizontalAlign = HorizontalAlign.Left;
                _newCell.BorderWidth = 1;
                _newRow.Cells.Add(_newCell);
                _newLabel = new Label();
                _newLabel.Text = misSecciones.Materia.Nombre;
                _newCell.Controls.Add(_newLabel);
                LoadCells(misSecciones);
                if (misSecciones.ListaPractica != null)// || (misSecciones.ListaPractica.Count > 0))
                {
                    foreach (Practica miPractica in misSecciones.ListaPractica)
                    {
                        LoadPractices(miPractica);
                    }
                }
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            _diasSemana = new List<string>();
            string miRol = (string)Session["rol"];
            if (miRol != "Escuela")
                Response.Redirect("../G3AccesoSistema/InicioSistema.aspx");

            _escuelaActual = new Escuela();
            _estudianteActual = new Estudiante();
            _escuelaActual = (Escuela)Session["usuario"];

            labelEstudiante.Text = _escuelaActual.NombreEscuela;
            _cod = Request.QueryString["cod"].Split('_').ToArray();
            _idPreMatriculaSelected = Convert.ToInt32(_cod[0]);
            _estudianteActual.IdEst = Convert.ToInt32(_cod[1]);
            _estudianteActual.LoadPreMatriculas();

            foreach (HorarioPreMatricula miPreMatriculaSelected in _estudianteActual.ListaHorarioPreMatricula)
            {
                if (miPreMatriculaSelected.Codigo == _idPreMatriculaSelected)
                {
                    LoadRows(miPreMatriculaSelected);
                }
            }
        }

        protected void btnBackPreMatricula_Click(object sender, EventArgs e)
        {
            Response.Redirect("mostrarPreMatriculasEstudiante.aspx?cod=" + _estudianteActual.IdEst);
        }

        protected void btnAprobarPreMatricula_Click(object sender, EventArgs e)
        {
            _escuelaActual.AprobarHorario(_estudianteActual.IdEst, _idPreMatriculaSelected);
            Response.Write("<script language=\"javascript\">alert('Se ha aprobado correctamente la prematricula del estudiante')</script>" +
                                    "<script language=\"javascript\">window.location='mostrarEstudiantesPreMatricula.aspx'</script>");
        }
    }
}